package com.mz.mattress.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mz.mattress.admin.api.req.*;
import com.mz.mattress.admin.api.resp.MerchantSum;
import com.mz.mattress.admin.api.resp.MerchantVo;
import com.mz.mattress.api.common.Result;
import com.mz.mattress.api.entity.Merchant;
import com.mz.mattress.api.entity.MerchantCheckRecord;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface MerchantService {

    /**
     * @param req
     * @return
     */
    Result<IPage<Merchant>> listPage(MerchantQueryReq req);

    void exportList(HttpServletResponse response, MerchantQueryReq req);

    /**
     * 获取在申请中的店铺
     * @param memberId
     * @return
     */
    Result<List<MerchantVo>> applyList(Long memberId);

    /**
     * 我的店铺列表
     * @param memberId
     * @return
     */
    Result<List<MerchantVo>> list(Long memberId);

    /**
     * 申请成为商家
     */
    Result submit(MerchantApplyReq req);

    Result<Merchant> getById(Integer id);

    Result updateById(MerchantApplyReq req);

    Result bindInvestor(MerchantInvestorBindReq req);

    /**
     * 是否启用卡项
     * @param id
     * @param card
     * @return
     */
    Result updateCard(Integer id, Integer card);

    /**
     * 商家审核
     * @param checkReq
     * @param userId
     * @param userName
     * @return
     */
    Result check(MerchantCheckReq checkReq, Integer userId, String userName);

    /**
     * 审核记录
     * @param id
     * @return
     */
    Result<List<MerchantCheckRecord>> records(Integer id);

    /**
     * 管理端 直接修改商家某些信息
     * @param merchant
     * @return
     */
    Result updateInfoById(Merchant merchant);


//    Result deleteByIds(Set<Integer> ids);

    Result deleteById(Integer id);

    /**
     * 商家首页统计
     * @param typeId      商家ID
     * @param memberMerId 商家会员ID
     * @param dates
     * @return
     */
    Result<MerchantSum> headSum(Integer typeId, Long memberMerId, String dates);

    /**
     * 商家首页数据统计
     * @param typeId
     * @param memberMerId
     * @param 往前推几天       0当天 1昨天
     * @return
     */
    Result<MerchantSum> merchantSum(Integer typeId, Long memberMerId, Integer days);

    /**
     * 更新销售员姓名
     */
    void bindSaleUpdate();

    /**
     * 改绑销售手机号
     * @param id
     * @param saleMobile
     * @return
     */
    Result bindSaleByMobile(Integer id, String saleMobile);


    Result downUpMerchant(MerchantDownUpReq req, Integer userId, String userName);

    /**
     * 统计所有商家设备数
     * @return
     */
    Result sumDevice();

    Result resetCanUse(Integer merchantId);

}
